home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-19 / gpt32src.zip / VWS.TRM < prev    next >
Text File  |  1992-03-25  |  8KB  |  292 lines

  1. /*
  2.  * $Id: vws.trm,v 3.26 92/03/24 22:35:51 woo Exp Locker: woo $
  3.  */
  4.  
  5. /* GNUPLOT - vws.trm */
  6. /*
  7.  * Copyright (C) 1990, 1991, 1992
  8.  *
  9.  * Permission to use, copy, and distribute this software and its
  10.  * documentation for any purpose with or without fee is hereby granted,
  11.  * provided that the above copyright notice appear in all copies and
  12.  * that both that copyright notice and this permission notice appear
  13.  * in supporting documentation.
  14.  *
  15.  * Permission to modify the software is granted, but not the right to
  16.  * distribute the modified code.  Modifications are to be distributed
  17.  * as patches to released version.
  18.  *
  19.  * This software  is provided "as is" without express or implied warranty.
  20.  *
  21.  * This file is included by ../term.c.
  22.  *
  23.  * This terminal driver supports:
  24.  *   IRIS terminals
  25.  *
  26.  * AUTHORS
  27.  *   Walter Speth
  28.  *           BITNET: SPETH@DBNPIB5
  29.  *
  30.  * send your comments or suggestions to (info-gnuplot@ames.arc.nasa.gov).
  31.  *
  32.  */
  33.  
  34. #define VWS_XMAX   1024
  35. #define VWS_YMAX   780
  36. #define VWS_VCHAR  25
  37. #define VWS_HCHAR  15
  38. #define VWS_VTIC   10
  39. #define VWS_HTIC   10
  40.  
  41. #include stdio
  42. /*
  43. #include math
  44. #include ssdef
  45. */
  46. #include descrip
  47.  
  48. #include <uisentry.h>
  49. #include <uisusrdef.h>
  50.  
  51.  
  52. #define DEFAULT_ATTR 0
  53. #define OVER_ATTR 1
  54. #define ERAS_ATTR 2
  55. #define BIS_ATTR 3
  56. #define COLOR_ATTR 4
  57. #define TEXT_ATTR 5
  58. #define LINE_ATTR 6
  59. #define BACK_ATTR 7
  60.  
  61.  
  62. float current_x, current_y;
  63.  
  64.  
  65. int vd_id, wd_id;
  66. int vcm_id;
  67.  
  68. static $DESCRIPTOR(ws_devname, "SYS$WORKSTATION");
  69. static $DESCRIPTOR(vd_title, "gnuplot");
  70.  
  71. static float x0, y0, xsiz, ysiz,
  72.              wc_xmin_new, wc_ymin_new, wc_xmax_new, wc_ymax_new,
  73.              wc_xmin, wc_ymin, wc_xmax, wc_ymax,
  74.              vd_width, vd_height;
  75.  
  76. VWS_resize_ast()
  77. { uis$resize_window(&vd_id, &wd_id, &x0, &y0, &xsiz, &ysiz,
  78.                      &wc_xmin, &wc_ymin, &wc_xmax, &wc_ymax);
  79.   replotrequest();
  80. }
  81. /****************************************************************************/
  82. VWS_init()
  83.  
  84.  
  85. {
  86.   int i;
  87.   int cattr;
  88.   $DESCRIPTOR(a_font,"DTABER0003WK00PG0001UZZZZ02A000");
  89.  
  90.   vd_width  = 14;
  91.   vd_height = 10; /* aspect sqrt(2) as DIN A paper */
  92.  
  93.   wc_xmin = 0.0;
  94.   wc_ymin = 0.0;
  95.   wc_xmax = (float) VWS_XMAX;
  96.   wc_ymax = (float) VWS_YMAX;
  97.  
  98.   vcm_id = uis$create_color_map(&8);
  99.  
  100.   vd_id = uis$create_display(&wc_xmin, &wc_ymin, &wc_xmax, &wc_ymax,
  101.                              &vd_width, &vd_height, &vcm_id);
  102.  
  103.   uis$set_color(&vd_id, &0, &.5, &.5, &.5);
  104.   uis$set_color(&vd_id, &1, &0.0, &0.0, &0.0);
  105.   uis$set_color(&vd_id, &2, &0.0, &0.0, &0.0);
  106.   uis$set_color(&vd_id, &3, &0.0, &0.0, &0.0);
  107.   uis$set_color(&vd_id, &4, &0.0, &0.0, &0.0);
  108.   uis$set_color(&vd_id, &5, &0.0, &0.0, &0.0);
  109.   uis$set_color(&vd_id, &6, &0.0, &0.0, &0.0);
  110.   uis$set_color(&vd_id, &7, &0.0, &0.0, &0.0);
  111.  
  112. /*
  113.   uis$set_color(&vd_id, &2, &.2, &.2, &.2);
  114.   uis$set_color(&vd_id, &3, &.3, &.3, &.3);
  115.   uis$set_color(&vd_id, &4, &.4, &.4, &.4);
  116.   uis$set_color(&vd_id, &5, &.5, &.5, &.5);
  117.   uis$set_color(&vd_id, &6, &.6, &.6, &.6);
  118.   uis$set_color(&vd_id, &7, &.7, &.7, &.7);
  119.  
  120. /* perhaps better for color terms (which I do not have)
  121.   uis$set_color(&vd_id, &0, &0.0, &0.0, &0.0);
  122.   uis$set_color(&vd_id, &1, &0.9, &0.0, &0.0);
  123.   uis$set_color(&vd_id, &2, &0.0, &0.9, &0.0);
  124.   uis$set_color(&vd_id, &3, &0.9, &0.9, &0.0);
  125.   uis$set_color(&vd_id, &4, &0.0, &0.0, &0.9);
  126.   uis$set_color(&vd_id, &5, &0.9, &0.0, &0.9);
  127.   uis$set_color(&vd_id, &6, &0.0, &0.9, &0.9);
  128.   uis$set_color(&vd_id, &7, &0.9, &0.9, &0.9);
  129. /*
  130. */
  131.   uis$disable_display_list(&vd_id);
  132.  
  133.   wd_id = uis$create_window(&vd_id, &ws_devname, &vd_title,
  134.                             &wc_xmin, &wc_ymin, &wc_xmax, &wc_ymax,
  135.                             &vd_width, &vd_height);
  136.  
  137.   uis$set_resize_ast(&vd_id, &wd_id, &VWS_resize_ast, &0,
  138.                      &x0, &y0, &xsiz, &ysiz,
  139.                      &wc_xmin_new, &wc_ymin_new, &wc_xmax_new, &wc_ymax_new);
  140.  
  141.   uis$set_writing_mode(&vd_id, &DEFAULT_ATTR, &OVER_ATTR, &UIS$C_MODE_OVER);
  142.   uis$set_writing_mode(&vd_id, &DEFAULT_ATTR, &ERAS_ATTR, &UIS$C_MODE_ERAS);
  143.   uis$set_writing_mode(&vd_id, &DEFAULT_ATTR, &BIS_ATTR, &UIS$C_MODE_BIS);
  144. /*
  145.   for (i=0; i<8; i++) {
  146.     cattr = COLOR_ATTR+i;
  147.     uis$set_writing_index(&vd_id, ©_ATTR, &cattr, &i);
  148.     }
  149. */
  150.   uis$set_background_index(&vd_id, &DEFAULT_ATTR, &BACK_ATTR, &0);
  151.   uis$set_writing_mode(&vd_id, &DEFAULT_ATTR, &TEXT_ATTR, &UIS$C_MODE_OVER);
  152.   uis$set_font(&vd_id,&TEXT_ATTR,&TEXT_ATTR,&a_font);
  153.   uis$set_char_size(&vd_id,&TEXT_ATTR,&TEXT_ATTR,&0,
  154.                     &(float)VWS_HCHAR,&(float)VWS_VCHAR);
  155.   uis$set_line_style(&vd_id,&LINE_ATTR,&LINE_ATTR,&0xFFFFFFFF);
  156. }
  157.  
  158. /****************************************************************************/
  159.  
  160. VWS_reset()
  161. {
  162.   uis$delete_display(&vd_id);
  163. }
  164. /****************************************************************************/
  165. VWS_scale(xs,ys)
  166. int xs,ys;
  167. {
  168.         return FALSE;
  169. }
  170. /****************************************************************************/
  171. VWS_graphics()
  172. {
  173.     uis$erase(&vd_id, &wc_xmin, &wc_ymin, &wc_xmax, &wc_ymax);
  174. }
  175. /****************************************************************************/
  176. VWS_text()
  177. {
  178. }
  179. /****************************************************************************/
  180. VWS_move(x,y)
  181. int x,y;
  182. {
  183.   current_x= (float)(x);
  184.   current_y= (float)(y);
  185. }
  186. /****************************************************************************/
  187. VWS_vector(x,y)
  188. int x,y;
  189. { int col;
  190.   float fx,fy;
  191.   fx=(float) x;
  192.   fy=(float) y;
  193.  
  194.       uis$line(&vd_id, &LINE_ATTR,
  195.                ¤t_x, ¤t_y, &fx, &fy);
  196.       VWS_move (x,y);
  197. }
  198. /****************************************************************************/
  199. VWS_linetype(lt)
  200. int lt;
  201. {
  202. long int lstyle[9]={    0xffffffff,
  203.                         0Xff00ff00,
  204.                         0xffffff00,
  205.                         0xffff0000,
  206.                         0xf0f0f0f0,
  207.                         0Xfff0fff0,
  208.                         0xf000f000,
  209.                         0xa5a5a5af,
  210.                         0xf00f00f0 };
  211.  
  212.   switch(lt) {
  213. case -1: uis$set_line_style(&vd_id,&LINE_ATTR,&LINE_ATTR,&0xFFFFFFFF);
  214.          uis$set_line_width(&vd_id,&LINE_ATTR,&LINE_ATTR,&1.5);
  215.          break;
  216. case -2: uis$set_line_style(&vd_id,&LINE_ATTR,&LINE_ATTR,&0xFFFFFFFF);
  217.          uis$set_line_width(&vd_id,&LINE_ATTR,&LINE_ATTR,&2.0);
  218.          break;
  219. /*
  220. default:  uis$set_line_style(&vd_id,&LINE_ATTR,&LINE_ATTR,&lstyle[lt % 8]);
  221.           makes part of curve disappear on my workstation
  222. */
  223. default:  uis$set_line_style(&vd_id,&LINE_ATTR,&LINE_ATTR,&0xFFFFFFFF);
  224.          uis$set_line_width(&vd_id,&LINE_ATTR,&LINE_ATTR,&1.0);
  225. }
  226. }
  227.  
  228. /****************************************************************************/
  229. static int justify_mode =CENTRE,up;;
  230.  
  231. VWS_put_text(x,y,str)
  232. int x,y; char* str;
  233. {
  234.   float fx,fy, thih, twid;
  235.  
  236.  
  237. /* uis$text parameter is descriptor string not character string */
  238.  
  239.   struct dsc$descriptor_s textline = {0,DSC$K_DTYPE_T,DSC$K_CLASS_S,""};
  240.  
  241.  
  242.   textline.dsc$a_pointer = str;
  243.   textline.dsc$w_length = strlen(textline.dsc$a_pointer);
  244.   uis$measure_text(&vd_id,&TEXT_ATTR,&textline,&twid,&thih);
  245.   fx=(float)x;
  246.   fy=(float)y;
  247.  
  248.   switch (justify_mode) {
  249.   case LEFT : fy+=thih/2.;
  250.               break;
  251.   case RIGHT : fy+=thih/2.;
  252.                fx-=twid;
  253.               break;
  254.  
  255.   case CENTRE : fy+=thih/2.;
  256.                fx-=twid/2;
  257.               break;
  258.   };
  259.  
  260.   uis$text(&vd_id,&TEXT_ATTR,&textline,&fx,&fy);
  261.      /* write to Example Viewport window */
  262.  
  263.  
  264. }
  265. /****************************************************************************/
  266. VWS_text_angle(ang)
  267. int ang;
  268. {
  269.   float degrees;
  270.   degrees=90.*(up=ang);
  271.   uis$set_text_slope (&vd_id, &TEXT_ATTR, &TEXT_ATTR, °rees);
  272. return TRUE;
  273. }
  274. /****************************************************************************/
  275. VWS_justify_text(mode)
  276. int mode;
  277. { justify_mode=mode;
  278. return TRUE;
  279. }
  280. /****************************************************************************/
  281. VWS_point(x,y,point)
  282. int x,y,point;
  283. {
  284. do_point(x,y,point);
  285. }
  286. /****************************************************************************/
  287. VWS_arrow(sx,sy,ex,ey)
  288. int sx,sy,ex,ey;
  289. {
  290. do_arrow(sx,sy,ex,ey);
  291. }
  292.